#!/bin/bash

dir_name=${1%/*}
file_name=${1##/*/}
file_name_no_ext=${file_name%.*}
file_type=${file_name##*.}

case $file_type in
c)
    bld_cmd="cc -o $file_name_no_ext -O2 $file_name"
    run_cmd="./$file_name_no_ext"
    execname=$file_name_no_ext
    ;;
cpp)
    bld_cmd="c++ -std=c++11 -O2 -o $file_name_no_ext $file_name"
    run_cmd="./$file_name_no_ext"
    execname=$file_name_no_ext
    ;;
go)
    bld_cmd="go build $file_name"
    run_cmd="./$file_name_no_ext"
    execname=$file_name_no_ext
    ;;
java)
    bld_cmd="javac -Xlint $file_name"
    run_cmd="java $file_name_no_ext"
    execname=$file_name_no_ext.class
    ;;
esac

echo ""
echo "> cd "`pwd`

if test $file_name -nt $execname; then
    echo "> $bld_cmd" && $bld_cmd && echo "> $run_cmd" && $run_cmd
else
    echo "> $run_cmd" && $run_cmd
fi
